package com.dexing.od1;

import java.util.*;

/**
 *  小王在进行游戏大闯关，有一个关卡需要输入一个密码才能通过，密码获得的条件如下： 
 *  在一个密码本中，每一页都有一个由26个小写字母组成的若干位密码，每一页的密码不同，需要从这个密码本中寻找这样一个最长的密码， 
 *  从它的末尾开始依次去掉一位得到的新密码也在密码本中存在。 
 *  请输出符合要求的密码，如果有多个符合要求的密码，则返回字典序最大的密码。 
 *  若没有符合要求的密码，则返回空字符串。 
 *  输入描述 
 *  密码本由一个字符串数组组成，不同元素之间使用空格隔开，每一个元素代表密码本每一页的密码。 
 *  输出描述 
 *  一个字符串 
 *  示例1输入输出示例仅供调试，后台判题数据一般不包含示例 
 *  输入 
 *  h he hel hell hello 
 *  输出 
 *  hello 
 *  示例2输入输出示例仅供调试，后台判题数据一般不包含示例 
 *  输入 
 *  b ereddred bw bww bwwl bwwlm bwwln 
 *  输出 
 *  bwwln
 */
public class D1768LangestCode {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        String[] strings = line.split(" ");
        ArrayList<String> list = new ArrayList<>();
        for (int i = 0; i < strings.length; i++) {
            String string = strings[i];
            if (string.length() == 1) {
                continue;
            }
            String replace = line.replace(string, "");
            boolean flag = true;
            for (int j = 1; j < string.length() ; j++) {
                String substring = string.substring(0, j);
                if (!replace.contains(substring)) {
                      flag = false;
                      break;
                }
            }
            if (flag) {
                list.add(string);
            }
        }
        if (list.size() == 0) {
            System.out.println();
            return;
        }
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if (o1.length() != o2.length()) {
                    return o2.length() - o1.length();
                } else {
                    return o2.compareTo(o1);
                }
            }
        });
        System.out.println(list.get(0));
    }

    public static void test() {
        // 处理输入
        Scanner in = new Scanner(System.in);
        String[] strs = in.nextLine().split(" ");

        // 将所有字符串放入哈希集合
        HashSet<String> word_set=new HashSet<>();
        for (String s : strs) {
            word_set.add(s);
        }

        // 真正的密码
         String true_pass_word="";

        //按顺序检查每一个词
        for (String s : strs) {
            // 条件1：检查这个词所有以索引0开头的子串在数组中是否都有
            boolean flag=true;
            for(int i=1;i<s.length();i++){
                // 以索引0开头的子串
                String sub_str=s.substring(0,i);
                if(!word_set.contains(sub_str)){
                    flag=false;
                    break;
                }
            }

            if(flag){
                // 条件2：比较密码长度
                if(s.length()>true_pass_word.length())
                    true_pass_word=s;
                // 条件3：比较密码字典排序
                if(s.length()==true_pass_word.length()&&s.compareTo(true_pass_word)>0){
                    true_pass_word=s;
                }
            }
        }

        System.out.println(true_pass_word);
    }
    
}
